From a91b2e223a652004468aabfd7741467894d3e587 Mon Sep 17 00:00:00 2001 From: "Eric S. Raymond" Date: Mon, 26 Apr 1993 05:01:41 +0000 Subject: [PATCH] (cd): Handle leading "~" like an absolute filename. --- lisp/files.el | 35 ++++++++++++++++++----------------- 1 file changed, 18 insertions(+), 17 deletions(-) diff --git a/lisp/files.el b/lisp/files.el index 2820c235a07..b0f92ed0bb5 100644 --- a/lisp/files.el +++ b/lisp/files.el @@ -268,23 +268,24 @@ Not actually set up until the first time you you use it.") If your environment imcludes a $CDPATH variable, cd tries each one of that colon-separated list of directories when resolving a relative cd." (interactive "FChange default directory: ") - (if (= (aref dir 0) ?/) - (cd-absolute (expand-file-name dir)) - (if (null cd-path) - (let ((trypath (parse-colon-path (getenv "CDPATH")))) - (setq cd-path (or trypath "./")))) - (if (not (catch 'found - (mapcar - (function (lambda (x) - (let ((f (expand-file-name (concat x dir)))) - (if (file-directory-p f) - (progn - (cd-absolute f) - (throw 'found t)))))) - cd-path) - nil)) - (error "No such directory on your cd path."))) - ) + (let ((first (aref dir 0))) + (if (or (= first ?/) (= first ?~)) + (cd-absolute (expand-file-name dir)) + (if (null cd-path) + (let ((trypath (parse-colon-path (getenv "CDPATH")))) + (setq cd-path (or trypath "./")))) + (if (not (catch 'found + (mapcar + (function (lambda (x) + (let ((f (expand-file-name (concat x dir)))) + (if (file-directory-p f) + (progn + (cd-absolute f) + (throw 'found t)))))) + cd-path) + nil)) + (error "No such directory on your cd path."))) + )) (defun load-file (file) "Load the Lisp file named FILE." -- 2.30.2